#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager

# 声明数据库属性
db = SQLAlchemy()
# 声明使用flask-login 以及配置项
login_manager = LoginManager()
login_manager.login_view = 'admin.login'  # 当未登录触发login_required装饰器时，跳转的页面
login_manager.login_message = 'Please login first!'


def create_app():
    # 实例化app flask对象
    app = Flask(__name__)
    # 从py文件导入配置信息
    app.config.from_pyfile('config.py')
    # 设置加密字符串
    app.secret_key = 'eddy'
    # 实例化bootstrap
    Bootstrap(app)

    # 在app实例化的时候绑定db
    db.init_app(app)
    # 在app实例化的时候绑定login-manager
    login_manager.init_app(app)

    # 导入蓝图。在此处引入可以防止循环导入包的问题
    from blog.views.admin import admin
    from blog.views.article import art
    app.register_blueprint(admin)
    app.register_blueprint(art)
    # app.register_blueprint(article)
    # 返回app实例
    return app
